/*
InteractHandler.h
用户端输入处理器
*/

#ifndef INTERACT_SERVER_H
#define INTERACT_SERVER_H

#include <Level.h>

using namespace std;

/// @brief 传入信息处理句柄
class InteractHandler {
public:
    /// @brief 服务器刷新频率
    const float rate = 1.0f / 60.0f;
    /// @brief 传入信息处理句柄构造函数
    InteractHandler(Level* level);

    /// @brief 处理指定的传入会话
    /// @param interact 会话内容
    /// @param responseBuffer 传出缓冲区
    void handleInteract(const LevelAction& interact,
        queue<LevelAction>& responseBuffer);

private:
    /// @brief 游戏主循环
    Level* level;
    /// @brief 处理客户端按键信息
    void handleKeyInput(const LevelAction& interact);
    /// @brief 处理客户端鼠标信息
    void handleMouseInput(const LevelAction& interact);
    /// @brief 创建新玩家
    void createNewPlayer(const LevelAction& interact);
};

#endif